import { http } from "@/utils/http";

// 保养记录信息接口类型
export interface MaintenanceRecord {
  id?: number;
  tenantId?: number; // 租户ID
  equipmentId?: number; // 设备ID
  maintenancePlanId?: number; // 保养计划ID
  maintenanceOrderNumber?: string; // 保养单号
  maintenanceCount?: number; // 保养次数
  maintainer?: string; // 保养人
  actualCost?: number; // 实际费用
  executor?: string; // 执行人
  maintenanceHours?: number; // 保养工时
  maintenanceProject?: string; // 保养项目
  isDeleted?: boolean; // 是否删除
  createTime?: string; // 创建时间
  updateTime?: string; // 更新时间
}

// 保养记录VO接口类型
export interface MaintenanceRecordVo {
  id?: number;
  deviceName?: string; // 设备名称
  deviceCode?: string; // 设备编码
  maintenanceProject?: string; // 保养项目
  maintenanceHours?: number; // 保养工时
  maintenanceDate?: string; // 保养日期
  actualCost?: number; // 实际费用
  maintainer?: string; // 保养人
}

// 保养记录查询参数接口
export interface MaintenanceRecordQuery {
  page?: number;
  limit?: number;
  keyword?: string; // 设备名称/编码搜索
  [key: string]: any;
}

// 保养记录添加参数接口
export interface MaintenanceRecordAdd {
  equipmentId: number; // 设备ID
  startTime: string; // 开始时间
  maintenanceProject: string; // 保养项目
  remark?: string; // 备注
  endTime: string; // 结束时间
  actualCost: number; // 实际费用
  responsiblePerson: string; // 负责人
}

// 保养记录更新参数接口
export interface MaintenanceRecordUpdate {
  id: number; // 保养记录ID
  equipmentId: number; // 设备ID
  startTime: string; // 开始时间
  maintenanceProject: string; // 保养项目
  maintenanceLevel: string; // 保养级别
  remark?: string; // 备注
  maintainer?: string; // 保养人
  endTime: string; // 结束时间
  estimatedCost: number; // 预计费用
  maintenanceHours: number; // 保养工时
  responsiblePerson: string; // 负责人
}

// 分页响应接口
interface PageResponse<T> {
  total: number;
  list: T[];
}

// 保养记录列表响应
export interface MaintenanceRecordListResponse {
  code: number;
  data: PageResponse<MaintenanceRecordVo>;
  message: string;
}

// 保养记录详情响应
export interface MaintenanceRecordDetailResponse {
  code: number;
  data: MaintenanceRecord;
  message: string;
}

// 通用响应接口
export interface ApiResponse<T = any> {
  code: number;
  data?: T;
  message: string;
}

// 获取保养记录列表
export const getMaintenanceRecordList = (params?: MaintenanceRecordQuery) => {
  return http.post<MaintenanceRecordListResponse, MaintenanceRecordQuery>(
    "/maintenanceRecord/list",
    {
      data: params
    }
  );
};

// 获取保养记录详情
export const getMaintenanceRecordDetail = (id: number) => {
  return http.get<MaintenanceRecordDetailResponse, { id: number }>(
    "/maintenanceRecord/info",
    {
      params: { id }
    }
  );
};

// 添加保养记录
export const addMaintenanceRecord = (data: MaintenanceRecordAdd) => {
  return http.post<ApiResponse, MaintenanceRecordAdd>(
    "/maintenanceRecord/add",
    {
      data
    }
  );
};

// 更新保养记录
export const updateMaintenanceRecord = (data: MaintenanceRecordUpdate) => {
  return http.request<ApiResponse>("put", "/maintenanceRecord/update", {
    data
  });
};

// 删除保养记录
export const deleteMaintenanceRecord = (id: number) => {
  return http.request<ApiResponse>("delete", "/maintenanceRecord/delete", {
    params: { id }
  });
};

// 批量删除保养记录
export const batchDeleteMaintenanceRecord = (ids: number[]) => {
  return http.request<ApiResponse>(
    "delete",
    "/maintenanceRecord/deleteByBatch",
    {
      data: { ids }
    }
  );
};
